In wireless networks, the ability to correctly receive data packets with increased reliability is important. Typically, if a packet is lost in transmission, the intended recipient requests that the sender retransmit the packet. However, certain systems that utilize a wireless network may require a very low packet loss and retransmission rate, for example where the data being transmitted via the wireless network is critical to the safety or performance of the system. In these systems, packet loss leading to requests for retransmission is unacceptable.
Network coding is a technique that can be used to improve the capacity and efficiency of network transmissions. Network coding functions by transmitting an encoded function of the data bits rather than the original data bits; subsequently, the function of the data bits is decoded to obtain the original data bits. Transmitting functions of the data bits in this manner can reduce the average number of transmissions needed for a given amount of information, which reduces the number of retransmissions needed if there are bit errors or erasures.
Other network codes are designed such that a large number of random linear combinations of packets are created from a number of original packets. These network codes are designed so that if the number of network coded packets received by the receiver and encoder is at least equal to the number of packets encoded, then there is high probability that the original packets are recoverable. However, these types of network coding provide insufficient error correction abilities, and performance is only guaranteed in cases where a sufficient number of packets are received correctly.